package de.pdbm.swt.aufgabe2;

import java.util.Date;
import java.util.List;

public class FactoryImpl implements Factory {

	private static final String DEFAULT_Bestellung = "de.pdbm.swt.aufgabe2.BestellungImpl";
	private static final String DEFAULT_Bestellposition = "de.pdbm.swt.aufgabe2.BestellpositionImpl";

	public Mitarbeiter newMitarbeiter(String id) {
		if (id == null || id == "") {
			return null;
		}
		return new MitarbeiterImpl(id);
	}

	public Produkt newProdukt(String id) {
		if (id == null || id == "") {
			return null;
		}
			return new ProduktImpl(id);
	
	}
	public Bestellung newBestellung(String id, Date datum,
			Mitarbeiter mitarbeiter, List<Bestellposition> bestellpositionen) {
		if (id == null || id == "" || datum == null || mitarbeiter == null
				|| bestellpositionen == null || bestellpositionen.isEmpty()) { // isEmpty?
			return null;
		}
		
		String classpath = System.getProperty("BestellungImpl",DEFAULT_Bestellung);
		if(classpath == DEFAULT_Bestellung)
		return new BestellungImpl(id, datum, mitarbeiter, bestellpositionen);
		else return new BestellungImplCalc(id, datum, mitarbeiter, bestellpositionen);
	}

	public Bestellposition newBestellposition(String id, Produkt produkt,
			int anzahl) {
		if (id == null || id == "" || produkt == null || anzahl <= 0) {
			return null;
		}
		String classpath = System.getProperty("BestellpositionenImpl",DEFAULT_Bestellposition);
		if(classpath == DEFAULT_Bestellposition)
		return new BestellpositionImpl(id, produkt, anzahl);
		else return new BestellpositionImplCalc(id, produkt, anzahl);

	}

}
